package com.zthz.douxing.event

import com.zthz.douxing.TripSegment
import com.zthz.douxing.msg.MessageType
import com.zthz.douxing.system.PlatformType
import grails.validation.Validateable

/**
 * 通过信鸽发送给用户的信息。
 */
@Validateable
class XinGeMessageEvent {

    String xgToken
    String title
    String content
    MessageType msgType
    PlatformType platformType

    static constraints = {
        xgToken nullable: false  //现在只考虑单独发给用户。
        title nullable: false, blank: false //标题不能为空
        content nullable: false, blank: false
        msgType nullable: false
        platformType nullable: false //平台不能为空，要区分用户登录的平台
    }


    @Override
    public String toString() {
        return com.google.common.base.Objects.toStringHelper(this)
                .add("xgToken", xgToken)
                .add("title", title)
                .add("content", content)
                .add("msgType", msgType)
                .add("platformType", platformType)
                .toString();
    }
}

/**
 * 表示用户即将出发的消息
 */
@Validateable
class UserWillDepartEvent {
    TripSegment tripSegment    //表示将要发送的行程
    String xgToken             //将要发送到用户的信鸽Token
    PlatformType platformType = PlatformType.android //用户使用的平台,默认是Android平台
    String cityCode //天气预报城市代码
    String username
    String getuiId
    static constraints = {
        username nullable: true
        tripSegment nullable: false
        xgToken nullable: true
        platformType nullable: true
        cityCode nullable: true
        getuiId nullable: true
    }
}

/**
 * 行程状态更新
 */
@Validateable
class UpdateTripSegmentStatusEvent {
    Date plantripEndTime
    TripSegment tripSegment   //行程段

    static constraints = {
        tripSegment nullable: false
    }
}
